import Vue from "vue";
import Vuex from "vuex";
import apis from "@/core/api/index"
import {
  MessageBox
} from 'element-ui';
 console.log(JSON.parse(localStorage.getItem("shopCarList"))||[] );
Vue.use(Vuex);


//定义属性值  data
const state = {
  count: 0,
  shopCarList: JSON.parse(localStorage.getItem("shopCarList"))||[]
}
//定义同步方法
const mutations = {

  appendShopcar(state, data) {
    //加入购物车
    var flag = true

    state.shopCarList.forEach((item, index) => {
      if (item.ID == data.ID) {
        item.num++
        state.count++

        flag = false
      }

    })
    if (flag) {
      data['num'] = 1
      state.shopCarList.push(data)
      state.count++


    }
    localStorage.setItem("shopCarList",JSON.stringify(state.shopCarList))
  },

  shopcaradd(state, data) {
    //购物车页面加加
    state.shopCarList.forEach((item, index) => {
      if (item.ID == data.ID) {
        console.log(item);
        item.num++
        state.count++
      }
    })
    localStorage.setItem("shopCarList",JSON.stringify(state.shopCarList))
  },
  shopcardel(state, data) {
    //购物车页面减减
    state.shopCarList.forEach((item, index) => {
      if (item.ID == data.ID) {
        console.log(item.num);
       let flag=true
        if (item.num > 1) {
          item.num--
          state.count--
          flag=false
         
        }
        if(flag){
          if (item.num == 1) {
            MessageBox.confirm(`是否删除${item.Name}?`, '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning ',
              center: true,
              roundButton: true,
              size: 'smaller'
            }).then(() => {
              state.shopCarList.splice(index, 1)
              state.count--
            }).catch(() => {
  
            });
  
  
          }
        }


      }
    })
    localStorage.setItem("shopCarList",JSON.stringify(state.shopCarList))
  },

  shopcarcheck(state, data) {
    //选择购买的商品
    state.shopCarList.forEach((item, index) => {
      if (item.ID == data.ID) {
        item.check ? item.check = false : item.check = true
      }
    })
    localStorage.setItem("shopCarList",JSON.stringify(state.shopCarList))
  },

  allshopcarList(state) {
    //全选反选
    state.shopCarList.forEach((item, index) => {
      item.check ? item.check = false : item.check = true
    })
    localStorage.setItem("shopCarList",JSON.stringify(state.shopCarList))
  },
  clearshopCarList(state){
    //清空购物车
    state.shopCarList=[]
   
    localStorage.removeItem("shopCarList")

  }



}
//定义 computed(属性计算)
const getters = {
  count(state) {
    let prices = 0;
    state.shopCarList.forEach((item, index) => {
      if (item.check) {
        prices += item.num * item.CurrentPrice
      }

    })
    return prices;
  },
  allcheck(state) {
    let check = [];
    state.shopCarList.forEach((item, index) => {
      if (item.check) {
        check.push(item)
      }

    })
    return check;
  }
}

//定义异步方法,可以在这个里面做一些异步操作,比如调用通用数据接口
const actions = {
  syFn(context) {
    // context.state  可以取 state 属性
    // context.commit  可以调用 mutations 同步方法 属性
    // context.dispatch可以调用 actions 异步方法 属性
    // 在组件里面调用 也是一样,同上面的方法一直 
  },
  test(context, data) {
    console.log(data)
  }
}

export default new Vuex.Store({
  state,
  mutations,
  actions,
  getters
})
